#ifndef __INTEGERNODE__
#define __INTEGERNODE__

#include"variablenode.h"
#include"programnode.h"

class IntegerNode : public ExpressionNode {
	
	public:
	
	int val;
	bool undef;

	IntegerNode();
	IntegerNode(IntegerNode const &);
	IntegerNode(int, bool = false);
	~IntegerNode();
	
	ProgramNode * defun() const;
	
	string toString() const;
	ExpressionNode * copy() const;
	bool isFreeVar(VariableNode const &) const;
	bool isBoundVar(VariableNode const &) const;
	ExpressionNode * eval(ProgramNode const &) const;
	ExpressionNode * subst(VariableNode const &, ExpressionNode const *);
	IntegerNode deint() const;
	
};

#endif
